//
// Created by YueChuan on 2023/3/7.
//

#ifndef NETWORKDISK_LOGIN_H
#define NETWORKDISK_LOGIN_H

#include <QWidget>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
#include <QSqlError>
#include <QSqlQuery>
#include<QMessageBox>
#include <QFile>
#include <QHash>
#include <QByteArray>
#include <QListWidgetItem>
#include <QThread>
#include "QMovie"

QT_BEGIN_NAMESPACE
namespace Ui { class Login; }
QT_END_NAMESPACE

class Login : public QWidget {
Q_OBJECT

public:
    explicit Login(QWidget *parent = nullptr);

    void connectDataBase();

    /*
     * 更新本地password文件
     * 用户点击自动登录，记住密码都会以文本的方式保存在本地的password.txt文件中
     * 用户成功登录会将这次登录的用户放到本地文件的首部，方便下次直接将uid填入输入框中
     */
    void upDateFile();

    /*
     * 自动登录
     * 先读取文件，判断自动登记标记是否在，然后触发登录信号
     */
    void autoLogin();

protected:
    void keyPressEvent(QKeyEvent *event) override;

    void mousePressEvent(QMouseEvent *) override;

public:
    ~Login();

    /*
     * 初始化用户名下拉列表
     * 访问本地文件，查询本地所有的用户名，初始化combox，默认将其设置为不可见
     * 当用户点击时会将其设置为可见
     */
    void initCombo();


public slots:

    void loginLabelSlot();

    void comboBoxShow();

    void on_currentItemChanged(QListWidgetItem *current);

    void on_autoLoginStateChanged(int);

private:
    Ui::Login *ui;
    QSqlDatabase db;            // 数据库连接
    QHash<QString, QList<QByteArray>> m_hash;   // 用户名和密码，以及自动的登录保存的hash表

};

#endif //NETWORKDISK_LOGIN_H
